home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / p_misc / netconf.arc / NETCODE.TXT < prev    next >
Text File  |  1988-12-10  |  27KB  |  521 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                     The KA9Q Internet (TCP/IP) Package: A Progress
  11.                                         Report
  12.  
  13.  
  14.                                    Phil Karn, KA9Q
  15.  
  16.  
  17.  
  18.                                        _A_B_S_T_R_A_C_T
  19.  
  20.                      For over  two  years,  the  author  has  led  the
  21.                 development  of  C-language  software implementing the
  22.                 ARPA  Internet   protocol   suite   (commonly   called
  23.                 "TCP/IP").    Intended  for  amateur  radio  use,  the
  24.                 software was originally written on and for the IBM  PC
  25.                 and  its clones running MS-DOS.  However, the use of a
  26.                 de-facto industry standard protocol set  has  resulted
  27.                 in  considerable  interest in and contributions to the
  28.                 effort by non-amateurs as well.  The software has been
  29.                 "ported"  to several different computers and is enjoy-
  30.                 ing increasing use in  both  conventional  Local  Area
  31.                 Network  (LAN)  environments as well as amateur packet
  32.                 radio.
  33.  
  34.                      This paper describes  the  considerable  progress
  35.                 this  effort  has  made, and reflects on the choice of
  36.                 TCP/IP now that significant on-air experience has been
  37.                 gained.
  38.  
  39.  
  40.  
  41.            _1.  _I_n_t_r_o_d_u_c_t_i_o_n
  42.  
  43.                 At  the  Fourth  ARRL  Amateur  Radio  Computer  Networking
  44.            Conference in March 1985, I proposed that the ARPA Internet Pro-
  45.            tocols be used in amateur packet  radio.  [2]  [3]  Since  then,
  46.            TCP/IP has become a reality on amateur radio.  Many stations now
  47.            run TCP/IP almost exclusively, and it is increasing steadily  in
  48.            popularity.
  49.  
  50.            _2.  _W_h_a_t "_T_C_P/_I_P" _i_s - _a_n_d _i_s_n'_t: _A _R_e_v_i_e_w
  51.  
  52.                 Unfortunately, the subject of higher level networking  pro-
  53.            tocols  in  amateur  radio  (including,  but not limited to, the
  54.            famous virtual circuit  vs  datagram  debate)  is  still  highly
  55.            controversial  in  certain  circles. Because many misconceptions
  56.            about TCP/IP persist, I will review what it is and is not.
  57.  
  58.                 TCP and IP are only two  elements  (albeit  very  important
  59.            ones)  of  a  larger, modular set of protocols known as the ARPA
  60.            Internet Protocol Suite.  It must be stressed that only  "higher
  61.  
  62.  
  63.                                    December 6, 1988
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.            level" protocols are specified. In ISO jargon, the ARPA Protocol
  73.            Suite begins with the upper half of the network layer (level 3B,
  74.            also  called  the  internet sublayer) and goes all the way up to
  75.            level 7, the application; levels 1, 2 and  3A  are  deliberately
  76.            left  unspecified.  This is in keeping with ARPA's original pur-
  77.            pose: constructing a uniform _i_n_t_e_r_n_e_t_w_o_r_k  out  of  an  existing
  78.            collection  of  dissimilar  links  and even entire networks that
  79.            would otherwise be incompatible with each other.   There  is  no
  80.            "ARPA  Standard Link Level Protocol" because there is no need to
  81.            require only one; they can all coexist yet still interoperate.
  82.  
  83.                 AX.25 Level 2, X.25 and the network layers of NET/ROM, Tex-
  84.            net,  and  even  COSI  fit  into the Internet model very nicely.
  85.            TCP/IP does _n_o_t compete with these developments (except for  the
  86.            level  4  or  transport  level  components in some of them), but
  87.            rather _c_o_m_p_l_e_m_e_n_t_s them all. By filling a very  real  need,  the
  88.            ARPA  suite  is today he de-facto industry standard for computer
  89.            networking when a wide variety of computers and underlying  net-
  90.            working technologies must be interconnected.
  91.  
  92.            _3.  _W_h_a_t "_H_i_g_h_e_r _L_e_v_e_l _N_e_t_w_o_r_k_i_n_g" _R_e_a_l_l_y _M_e_a_n_s
  93.  
  94.                 In the ISO model, everything above layer 3 is "end-to-end".
  95.            That  is,  layers  4  through  7  exist  _o_n_l_y  in the end users'
  96.            machines (_h_o_s_t_s in ARPA terminology, _e_n_d _s_y_s_t_e_m_s in ISO) not  in
  97.            the  intermediate  packet  switches  (_g_a_t_e_w_a_y_s).  Unfortunately,
  98.            some have used terminology at  variance  with  this  definition,
  99.            causing  considerable  confusion  as  to  the meaning of "higher
  100.            level networking".  For example, the addition of hop-by-hop ack-
  101.            nowledgements  to a network is _n_o_t "level 3 networking", it is a
  102.            level 2 function.  Further, by strict interpretation of the  ISO
  103.            model,  we  already  have  a de-facto datagram-oriented "network
  104.            layer" in the address field that is part of "AX.25 Level 2".  We
  105.            already have a de-facto "transport" protocol running in the TNCs
  106.            that maintains connections on an end-to-end  basis.   Installing
  107.            "real"  level 3 and 4 protocols means pushing AX.25 back down to
  108.            the link layer it was designed for.
  109.  
  110.                 These distinctions are not just semantic  quibbling.   They
  111.            affects  one's entire view of how the pieces should fit together
  112.            in the network and how it should appear to the users.
  113.  
  114.            _4.  _C_o_m_p_u_t_e_r _N_e_t_w_o_r_k_i_n_g _v_s _T_e_r_m_i_n_a_l _N_e_t_w_o_r_k_i_n_g
  115.  
  116.                 It should now be apparent that the purpose of higher  level
  117.            protocols  is  to  connect _c_o_m_p_u_t_e_r_s, not just terminals, and to
  118.            use the capabilities of those computers effectively.  (Running a
  119.            "terminal  program"  on a PC is _n_o_t using it effectively.)  True
  120.            networking is much more  than  just  providing  "virtual  wires"
  121.            between dumb terminals[1] or even a dumb terminal and a bulletin
  122.            _________________________
  123.              [1] The term _d_u_m_b _t_e_r_m_i_n_a_l was originally a trademark
  124.            of  Lear Siegler Corporation for their ADM-3 CRT termi-
  125.  
  126.  
  127.  
  128.                                    December 6, 1988
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.            board system.  While packet's use of faster modems,  addressing,
  138.            error  detection and retransmission does provide channel sharing
  139.            and error-free communications, without  higher  level  protocols
  140.            running on the user's computers the result is _q_u_a_l_i_t_a_t_i_v_e_l_y lit-
  141.            tle different than ordinary radio teletype  (RTTY).[2]  In  con-
  142.            trast, _t_r_u_e networking involves one or more high level (applica-
  143.            tion, presentation and transport) protocols plus a multi-tasking
  144.            operating  system  running in the end-user's machine, performing
  145.            end-to-end functions automatically on  behalf  of  human  users.
  146.            For  example,  a  single  system  might respond automatically to
  147.            remote requests for file, accept remotely sent files  and  elec-
  148.            tronic  mail  for  storage,  and  initiate similar operations on
  149.            other computers in response to local commands -- all  simultane-
  150.            ously,  with  minimal  operator  intervention.  In the following
  151.            sections I will review the major ARPA protocols and describe the
  152.            implementation  of  those in the KA9Q Internet software package,
  153.            starting with the top layers and working down.
  154.  
  155.            _5.  _I_n_t_e_r_n_e_t _S_o_f_t_w_a_r_e _C_o_m_p_o_n_e_n_t_s
  156.  
  157.                 A major goal of the KA9Q Internet package was that multiple
  158.            network  activities  should  go on simultaneously.  This greatly
  159.            increases the usefulness of  the  system,  and  alleviates  many
  160.            other  potentially  troublesome  problems.   For example, "stuck
  161.            connections" caused by the other station  abruptly  disappearing
  162.            are  only  a minor annoyance, as the only resources wasted are a
  163.            few bytes of RAM. The  system  can  still  be  used  by  others;
  164.            keepalive timers aren't necessary.
  165.  
  166.                 Since MS-DOS is not a multitasking system, all of the  pro-
  167.            tocols  were combined in a single MS-DOS program called net.exe,
  168.            and a very simple form of multitasking is  performed  internally
  169.            by a "commutator loop" mechanism.[3] The main loop of  the  pro-
  170.            gram  sequentially  polls  various  routines to see if they need
  171.            service. For example, the keyboard is checked  for  input,  then
  172.            the serial input buffer is checked for characters, then the Eth-
  173.            ernet receiver is checked for packets, then the timer is checked
  174.            to see if a tick occurred, and so on.
  175.            _________________________
  176.            nal. The term quickly became generic, referring to  any
  177.            keyboard/display  (or printer) combination lacking pro-
  178.            grammability and local file storage.  Only recently has
  179.            it  really  become pejorative, since many complete per-
  180.            sonal computers now cost significantly less  than  dumb
  181.            terminals.
  182.              [2] Some call  conventional  packet  operation  "RTTY
  183.            packet".
  184.              [3] This is somewhat similar to the multitasking form
  185.            of FORTH known  as  IPS,  or  Interpreter  for  Process
  186.            Structures.  IPS  was developed by DJ4ZC for use in the
  187.            AMSAT Phase 3 satellites.
  188.  
  189.  
  190.  
  191.  
  192.                                    December 6, 1988
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.                 When events occur, calls are made to the  appropriate  rou-
  202.            tines;  incoming data triggers the appropriate link level proto-
  203.            col modules, which in turn call the higher  level  modules,  and
  204.            eventually  the  applications  are  called.  This is known as an
  205.            _u_p_c_a_l_l or _p_s_e_u_d_o-_i_n_t_e_r_r_u_p_t mechanism,  and  has  been  used  for
  206.            other  small  networking  packages  such  as MIT's PC/IP.  It is
  207.            important to note that there  is  no  conventional  sleep/wakeup
  208.            mechanism;  each application must provide functions to be called
  209.            asynchronously by the system. These functions  cannot  block  or
  210.            hog  the  processor;  they must respond to the event and return.
  211.            The applications must therefore be structured as state  machines
  212.            driven by upcalls.  While this is a somewhat unusual environment
  213.            for a programmer, it isn't too hard to get used to it.  In fact,
  214.            it  encourages  the programmer to think about what should happen
  215.            for every possible combination of state and event; it's easy  to
  216.            get  sloppy about this in a conventional environment by assuming
  217.            that only the desired event can occur in a certain state.
  218.  
  219.                 I do not mean to imply that the commutator loop approach is
  220.            superior. I originally chose it as a simple expedient, and since
  221.            then I've been surprised by how much I've been able to do with a
  222.            very  small  amount  of  memory.  The  entire executable program
  223.            net.exe, containing all of the protocols about to be  described,
  224.            is  only about 60K bytes. In comparison, the popular PC terminal
  225.            program "Procomm" is almost three times as large![4]  One  major
  226.            drawback of the upcall structure, however, is the lack of appli-
  227.            cation portability. Future developments may include a true  mul-
  228.            titasking   kernel  so  that  a  more  conventional  programming
  229.            environment may be supplied as well.
  230.  
  231.                 The user interface is simple, but functional.  Commands  to
  232.            invoke  each of the applications are provided, along with others
  233.            primarily useful for monitoring and statistics gathering.  Up to
  234.            ten  client  "sessions"  may exist at any one time, and the user
  235.            may switch between them at will.   There  is  no  limit  on  the
  236.            number  of server sessions that may exist at one time other than
  237.            the memory available on the machine for buffering and housekeep-
  238.            ing.
  239.  
  240.            _5._1.  _T_e_l_n_e_t, _F_T_P _a_n_d _S_M_T_P _A_p_p_l_i_c_a_t_i_o_n_s
  241.  
  242.                 While many application protocols have been built for packet
  243.            networks, three are most useful: remote login, file transfer and
  244.            mail transfer.  This is reflected in the "big three" ARPA Inter-
  245.            net  application  protocols:  Telnet, FTP and SMTP respectively.
  246.            Each application protocol is further broken down into _c_l_i_e_n_t and
  247.            _s_e_r_v_e_r  halves. Clients act on behalf of local users by initiat-
  248.            ing communication with remote servers that passively await their
  249.            requests.
  250.            _________________________
  251.              [4] I do admit that net.exe lacks  certain  essential
  252.            features, e.g., exploding windows and sound effects.
  253.  
  254.  
  255.  
  256.  
  257.                                    December 6, 1988
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.                 Clients and servers for all three protocols  are  presently
  267.            in  the  software,  although the telnet server does nothing more
  268.            than route an incoming connection to the console  for  keyboard-
  269.            to-keyboard chatting.  (MS-DOS isn't a timesharing system, so it
  270.            wasn't possible to provide conventional  telnet  service).   FTP
  271.            supports  both  ASCII  (default) and binary file transfers, with
  272.            passwords protecting against unauthorized file access.  SMTP  is
  273.            presently  functional  but  it  does  not  have  the features of
  274.            mailers found on larger systems such as mailing lists and  mail-
  275.            level  forwarding.   Two  miscellaneous  application servers are
  276.            also provided: echo and discard.  They are intended  mainly  for
  277.            testing.
  278.  
  279.            _5._2.  _T_C_P _a_n_d _U_D_P _T_r_a_n_s_p_o_r_t _P_r_o_t_o_c_o_l_s
  280.  
  281.                 The applications just described all use TCP, the  Transmis-
  282.            sion  Control Protocol.  TCP is a transport/session layer (level
  283.            4 and 5) protocol that provides virtual circuit services  on  an
  284.            end-to-end  basis.   The  use  of TCP is not mandatory, however.
  285.            Some important applications prefer not to use virtual  circuits,
  286.            so  an alternative is supplied: UDP, the User Datagram Protocol.
  287.            UDP is important for routing algorithms, information  broadcast-
  288.            ing  and  transaction-oriented  applications such as the Network
  289.            File System (NFS).[5]
  290.  
  291.                 The TCP was the first module written for the package and is
  292.            now quite mature.  Three upcalls are provided to the application
  293.            layer: receive, send and protocol  state  change.   The  receive
  294.            upcall  indicates  that  data has arrived which may be read from
  295.            the receive queue by the application.  The send upcall indicates
  296.            that  outgoing  data  has  been  acknowledged, freeing up buffer
  297.            space that may now be used for  additional  transmissions.   The
  298.            protocol  state  change  upcall  indicates  when connections are
  299.            opened and closed, and applications use these to drive their own
  300.            state  machines  and  to determine end of file.  Much effort has
  301.            gone into tuning the TCP retransmission algorithms for efficient
  302.            operation   across  amateur  packet  radio,  including  a  novel
  303.            approach to measuring round trip times accurately during periods
  304.            of high packet loss.  [6]
  305.  
  306.                 The UDP module is much simpler than  TCP.  Only  a  receive
  307.            data upcall is provided.
  308.  
  309.            _5._3.  _I_n_t_e_r_n_e_t _P_r_o_t_o_c_o_l (_I_P)
  310.  
  311.                 The core protocol of the ARPA Internet is called, naturally
  312.            _________________________
  313.              [5] NFS is not implemented in the package (yet) so it
  314.            will not be described here.  However, its popularity is
  315.            mushrooming around the Internet.  On many Ethernet  lo-
  316.            cal  area  networks  (LANs) NFS/UDP traffic now exceeds
  317.            that using TCP.
  318.  
  319.  
  320.  
  321.  
  322.                                    December 6, 1988
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.            enough, the Internet Protocol (IP).  IP sits  immediately  above
  332.            the  existing lower level networks (_s_u_b_n_e_t_s in ARPA terms). This
  333.            is the only mandatory protocol in the entire suite.  The  higher
  334.            level protocol in use (TCP, etc) need be agreed upon only by the
  335.            hosts involved, but you can't be "on the  Internet"  unless  you
  336.            run IP.
  337.  
  338.                 Since IP is "spoken" by  hosts  and  "interpreted"  by  the
  339.            gateways (packet switches), I found it convenient to split my IP
  340.            into two halves.  The  upper  half  contains  the  parts  of  IP
  341.            relevant  to a host (outgoing packet generation, incoming packet
  342.            demultiplexing, fragment reassembly).  The lower  half  contains
  343.            the  IP packet switching components (routing and fragmentation).
  344.            Every host is also a gateway, i.e., it  will  route  and  switch
  345.            traffic that is just passing through in addition to sourcing and
  346.            sinking its own traffic.  If the code is to be run  on  a  dedi-
  347.            cated gateway, the host functions can be removed to save space.
  348.  
  349.                 The packet routing portion of my IP includes a  generalized
  350.            form  of  _s_u_b_n_e_t_t_i_n_g, the ability to structure the address space
  351.            into a tree-shaped hierarchy. [3]  Each  entry  in  the  routing
  352.            table includes a width field saying how many bits in its address
  353.            field are significant. When packets are  routed,  the  algorithm
  354.            finds  the routing table entry providing the "best match" to the
  355.            leading bits of the  destination  address.   This  allows  large
  356.            blocks of addresses that share a common next hop, e.g., all west
  357.            coast addresses in an east coast switch, to share a single rout-
  358.            ing  table  entry.  This  reduces  the average size of a routing
  359.            table enormously while still allowing arbitrary routes to be set
  360.            up.  Even this relatively complex technique, however, only takes
  361.            about 6 milliseconds to route a packet on the  IBM  PC,  thereby
  362.            refuting the argument that datagram routing "costs" too much.
  363.  
  364.                 No automatic routing algorithm  is  provided  as  yet;  the
  365.            routes  must  be set up manually. Automatic routing is clearly a
  366.            desirable long-term goal, but it is a difficult and  challenging
  367.            problem in any network so I have deferred it.
  368.  
  369.            _5._4.  _S_u_b_n_e_t _P_r_o_t_o_c_o_l_s
  370.  
  371.                 Link/subnet drivers for AX.25 Level 2, Ethernet  and  asyn-
  372.            chronous  point-to-point  links  are  presently provided. In the
  373.            spirit of the Internet, others  can  be  added  easily  as  they
  374.            become available (e.g., NET/ROM, Texnet and COSI).
  375.  
  376.                 The AX.25 Level 2 driver is at present very simple; each IP
  377.            datagram  is  encapsulated in a single AX.25 UI (connectionless)
  378.            frame.  The KISS TNC [1] was  developed  to  allow  these  "raw"
  379.            packets  to  be  generated.   This  was an expedient for initial
  380.            operation; it is _n_o_t the only way that IP can be run on  top  of
  381.            AX.25.    It   is   entirely  possible  to  use  the  full-blown
  382.            connection-oriented AX.25 protocol  under  IP  if  necessary  to
  383.            improve hop-by-hop reliability; this will have to be done to use
  384.            the internals of NET/ROM to move IP traffic, for example. On the
  385.  
  386.  
  387.                                    December 6, 1988
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.            other  hand,  collision-free  backbone channels would do well to
  397.            avoid the extra complexity  and  overhead  of  link  level  ack-
  398.            nowledgements.
  399.  
  400.                 It is incorrect to say that IP cannot be run efficiently on
  401.            noisy poor channels because of its relatively large header size.
  402.            While not done at  present,  the  subnet  or  link  may  perform
  403.            intranet  fragmentation.  That  is,  it  may  chop  up  a single
  404.            datagram into multiple smaller packets and reassemble them tran-
  405.            sparently at the other end of the link before passing them up to
  406.            IP.  This is distinct from the internet level fragmentation done
  407.            by IP, and is preferable for performance reasons when the subnet
  408.            has an unusually small packet size limit.  As for  the  "inordi-
  409.            nate" overhead associated with a 40-byte TCP/IP header, consider
  410.            that even at 1200 baud, 40 bytes  takes  only  a  quarter  of  a
  411.            second  to send.  Many stations spend more than this just keying
  412.            up the transmitter.  As faster modems (e.g., the new  WA4DSY  56
  413.            kbps design) become widespread, header overhead will become even
  414.            more of a non-issue.
  415.  
  416.            _5._5.  _T_h_e _A_d_d_r_e_s_s _R_e_s_o_l_u_t_i_o_n _P_r_o_t_o_c_o_l (_A_R_P)
  417.  
  418.                 The Internet Protocol provides its own addressing  indepen-
  419.            dent  of that used in the subnetworks. It is therefore necessary
  420.            to map IP addresses into subnet addresses for each  hop.   Some-
  421.            times  this can be done by making the subnet address part of the
  422.            IP address, but frequently this isn't possible because the  sub-
  423.            net address is too big.  This is the case with both Ethernet and
  424.            AX.25, so the Address Resolution Protocol was implemented. [7]
  425.  
  426.                 The ARP module in the package serves both subnet protocols.
  427.            Since  ARP  requires a broadcast facility in the subnet, I chose
  428.            "QST-0" as the AX.25 broadcast  address.   Manual  commands  are
  429.            provided  to  manipulate  the  ARP  translation table, either to
  430.            override the automatic mechanism or to specify  multi-hop  digi-
  431.            peater  paths.  The latter must be done manually since the AX.25
  432.            subnet can no longer provide broadcasting when  digipeaters  are
  433.            involved.
  434.  
  435.            _6.  _A_v_a_i_l_a_b_i_l_i_t_y
  436.  
  437.                 The entire software package, including executable programs,
  438.            complete   source   code  and  documentation,  is  available  to
  439.            interested amateurs for the cost of copying  only.   It  may  be
  440.            freely  used  and copied for noncommercial purposes only.  Brian
  441.            Lloyd, WB6RQN, handles the distribution on MS-DOS format  floppy
  442.            disks;  send  him  $5  to cover costs and he will provide disks,
  443.            mailers and postage. Persons outside the US should add enough to
  444.            cover higher postage costs.
  445.  
  446.            _7.  _C_r_e_d_i_t_s
  447.  
  448.                 Many people  have  contributed  in  various  ways  to  this
  449.            effort,  so  what  follows  is  necessarily only a partial list.
  450.  
  451.  
  452.                                    December 6, 1988
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.            Bdale Garbee N3EUA wrote the mail command  _b_m,  and  coordinates
  462.            the integration of software releases.  Mike Chepponis K3MC wrote
  463.            the first KISS software for the TNC-2 and has been  instrumental
  464.            in  encouraging others to support other TNCs (see [1] for a com-
  465.            plete list).  Jon Bloom KE3Z contributed the driver for the HAPN
  466.            HDLC  adapter  card  for  the PC.  Brian Lloyd WB6RQN has widely
  467.            promoted the amateur use of TCP/IP, writing  introductory  maga-
  468.            zine  articles  geared  to the novice user.  When the code first
  469.            became available, Brian organized a local group of users in  the
  470.            Washington  DC area that has since grown to several dozen; their
  471.            feedback, as well as that of other groups around the world,  has
  472.            proven  very useful in improving the package.  Brian also spends
  473.            a considerable amount of time distributing the package on floppy
  474.            disk by mail.
  475.  
  476.                 While I wrote the bulk of net.exe myself, others  supported
  477.            my  efforts  by  patiently answering my many questions about the
  478.            details of the protocols.  Thanks go to Dave Mills W3HCF of  the
  479.            University of Delaware and Jon Postel of the University of Cali-
  480.            fornia Information Sciences Institute.
  481.  
  482.            _8.  _R_e_f_e_r_e_n_c_e_s
  483.  
  484.  
  485.            1.   Chepponis, M., and Karn, P., "The KISS TNC: A simple  Host-
  486.                 to-TNC communications protocol," this conference.
  487.  
  488.            2.   Karn, P., "TCP/IP: A Proposal for Amateur Packet Radio Lev-
  489.                 els 3 and 4," Fourth ARRL Amateur Radio Computer Networking
  490.                 Conference, San Francisco, March 1985, p. 4.62.
  491.  
  492.            3.   Karn, P., "Addressing and Routing Issues in Amateur  Packet
  493.                 Radio,"  Fourth  ARRL  Amateur  Radio  Computer  Networking
  494.                 Conference, San Francisco, March 1985, p. 4.69.
  495.  
  496.            4.   "For own in-house network, COS selects TCP/IP,"  Data  Com-
  497.                 munications magazine, June 1987.
  498.  
  499.            5.   Bloom, J., "NET.EXE: Beyond the TNC," Gateway  Vol.  3  No.
  500.                 12, Feb 6, 1987.
  501.  
  502.            6.   Karn, P., and Partridge,  C.,  "Improving  Round-Trip  Time
  503.                 Estimates   in   Reliable   Transport  Protocols,"  SIGCOMM
  504.                 Workshop proceedings, Stowe, Vt., August 1987.
  505.  
  506.            7.   Plummer, "Address Resolution Protocol," ARPA RFC 826.
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.                                    December 6, 1988
  517.  
  518.  
  519. 
  520.